﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;


namespace FrbaCommerce.Codigo_reutilizable
{
    class Validaciones
    {
        public static void NulidadDeDatosIngresados(Form ofrm, MaskedTextBox textBox)
        {
            int i = 0;
            int i2 = 0;
            
            Codigo_reutilizable.Limpiar.BlanquearControles(ofrm);

            i = validarDatosText(ofrm, textBox);
            i2 = validarDatosTextMask(ofrm, textBox);
            

            if (i != 0 || i2 != 0)
            {
                throw new Excepciones.Excepcion("Faltan completar los campos marcados.");
            }
        }



        private static int validarDatosTextMask(Form ofrm, MaskedTextBox Telefono)
        {
            {
                int i = 0;
                Action<Control.ControlCollection> func = null;
                func = (controls) =>
                {
                    foreach (Control control in controls)
                        if (control is MaskedTextBox)
                        {
                                if (string.IsNullOrEmpty(control.Text) && (control != Telefono))
                                {
                                    control.BackColor = Color.Tomato;
                                    i++;
                                }
                            
                        }

                        else { func(control.Controls); }
                };

                func(ofrm.Controls);
                return i;
            }
        }

        private static int validarDatosText(Form ofrm, MaskedTextBox Telefono)
        {
            {
                int i = 0;
                Action<Control.ControlCollection> func = null;
                func = (controls) =>
                {
                    foreach (Control control in controls)
                        if (control is TextBox)
                        {
                            if (control.Name.Equals("textBoxModContraseña"))
                            {
                            }
                            else{



                            if (string.IsNullOrEmpty(control.Text) && (control != Telefono))
                            {
                                control.BackColor = Color.Tomato;
                                i++;
                            }
                            }
                        }

                        else { func(control.Controls); }
                };

                func(ofrm.Controls);
                return i;
            }
        }


        public static int validarNulidadDatosText(Form ofrm)
        {
            {
                int i = 0;
                Action<Control.ControlCollection> func = null;
                func = (controls) =>
                {
                    foreach (Control control in controls)
                        if (control is TextBox)
                        {
                            if (string.IsNullOrEmpty(control.Text))
                            {
                                control.BackColor = Color.Tomato;
                                i++;
                            }

                        }
                    
                    else { func(control.Controls); }
                };

                func(ofrm.Controls);
                return i;
            }
        }


        public static void validarDatosingresadosTextBox(TextBox textbox)
        {           

            if (textbox.Text == "")
                {
                    textbox.BackColor = Color.Tomato;
                    throw new Excepciones.Excepcion("Faltan completar el campo marcado");
                }

        }


        public static void ValidarFecha(string p)
        {
            DateTime fechaLimiteInferior = new DateTime(1800, 1, 1, 0, 0, 0);
            DateTime fechaLimiteSuperior = new DateTime(3000, 1, 1, 0, 0, 0);
            DateTime time = DateTime.Parse(p);


            int i = time.CompareTo(fechaLimiteInferior);
            int j = time.CompareTo(fechaLimiteSuperior);

            if ((i <= 0) || (j >= 0))
            {
                throw new Excepciones.Excepcion("La Fecha ingresada no es valida. Estas fuera del rango disponible");

            }


        }


        public static void ValidarTipoDni(string p)
        {
            Decimal expectedDecimal;
            if (!Decimal.TryParse(p, out expectedDecimal))
            {
                throw new Excepciones.Excepcion("Se están ingresando datos no validos en el campo DNI");
            }
        }


        public static void ValidarEnteroMask(MaskedTextBox mask, Label descTextBox)
        {
            String p;
            p = Convert.ToString(mask.Text);
            Int32 expectedDecimal;
            if (!Int32.TryParse(p, out expectedDecimal))
            {
                throw new Excepciones.Excepcion("Se están ingresando datos no validos, por favor revisar campo: " + descTextBox.Text);
            }
        }



        public static void ValidarTipoNroCalle(string p)
        {
            Decimal expectedDecimal;
            if (!Decimal.TryParse(p, out expectedDecimal))
            {
                throw new Excepciones.Excepcion("Se están ingresando datos no validos en el campo Número de Calle");

            }
        }

        public static void ValidarTipoPiso(string p)
        {
            Decimal expectedDecimal;
            if (!Decimal.TryParse(p, out expectedDecimal))
            {
                throw new Excepciones.Excepcion("Se están ingresando datos no validos en el campo Piso");
            }

        }


        public static void validarTelyFechaNulos(MaskedTextBox fecha, MaskedTextBox tel)
        {
            int i = 0;

            string fec = fecha.Text;
            char[] sacoCorchetes = {'/', ' '};
            string fechaSinCorchetes = fec.TrimStart(sacoCorchetes);
            if (fechaSinCorchetes == "")
            //if (Convert.ToString(fecha.Text) == "__/__/")
            {
                fecha.BackColor = Color.Tomato;
                i++;
                
            }


            if (string.IsNullOrEmpty(tel.Text))
            {
                tel.BackColor = Color.Tomato;
                i++;

            }

            if (i > 0)
            {
                throw new Excepciones.Excepcion("Verificar datos no ingresados:   TELEFONO ó FECHA");
            }


        }

    }





}